// 使用对称加密算法：aes 128
// 128位的秘钥
const secret = Buffer.from('mm7h3ck87ugk9l4a');
const crypto = require('crypto');

// 准备一个iv，随机向量 这里为了简单 不随机
const iv = Buffer.from('jxkvxz97409u3m8c');

exports.encrypt = function (str) {
  const cry = crypto.createCipheriv('aes-128-cbc', secret, iv);
  let result = cry.update(str, 'utf-8', 'hex');
  result += cry.final('hex');
  return result;
};

exports.decrypt = function (str) {
  const decry = crypto.createDecipheriv('aes-128-cbc', secret, iv);
  let result = decry.update(str, 'hex', 'utf-8');
  result += decry.final('utf-8');
  return result;
};

// exports.exports = function () {
//  aes 算法 一个密钥 配一个iv
// 解密的时候要用 同样 密钥和 iv
//   // 每次都 重新生成 iv 这样 能保证 密钥泄密了  还能保证 iv 是随机的 别人获取不到
// 但有个问题 服务器重启了 之前的 都解密不了了
//   const iv = Buffer.from(
//     Math.random().toString().slice(-8) + Math.random().toString().slice(-8)
//   );
//   return {
//     decrypt: function (str) {
//       const decry = crypto.createDecipheriv('aes-128-cbc', secret, iv);
//       let result = decry.update(str, 'hex', 'utf-8');
//       result += decry.final('utf-8');
//       return result;
//     },
//     encrypt: function (str) {
//       const cry = crypto.createCipheriv('aes-128-cbc', secret, iv);
//       let result = cry.update(str, 'utf-8', 'hex');
//       result += cry.final('hex');
//       return result;
//     },
//   };
// };
